
var TableInit = function(){
	var oTableInit = new Object();
    //初始化Table
    oTableInit.Init = function () {
        	$('#resTable').bootstrapTable({
            url: ctx +'/system/resource/listSysResource/get.mvc',         //请求后台的URL（*）
            method: 'get',                      //请求方式（*）
            striped: true,                      //是否显示行间隔色
            cache: false,                       //是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
            pagination: true,                   //是否显示分页（*）
            paginationLoop:false,
            sortable: true,                     //是否启用排序
            sortOrder: "asc",                   //排序方式
            queryParams: oTableInit.queryParams,//传递参数（*）
            sidePagination: "server",           //分页方式：client客户端分页，server服务端分页（*）
            pageNumber:1,                       //初始化加载第一页，默认第一页
            pageSize: 10,                       //每页的记录行数（*）
            pageList: [10, 25, 50, 100],        //可供选择的每页的行数（*）
            search: false,                       //是否显示表格搜索，此搜索是客户端搜索，不会进服务端，所以，个人感觉意义不大
            strictSearch: true,
            showColumns: false,                  //是否显示所有的列
            showRefresh: false,                  //是否显示刷新按钮
            minimumCountColumns: 2,             //最少允许的列数
            clickToSelect: true,                //是否启用点击选中行
            height: 500,                        //行高，如果没有设置height属性，表格自动根据记录条数觉得表格高度
            uniqueId: "pkId",                     //每一行的唯一标识，一般为主键列
            showToggle:false,                    //是否显示详细视图和列表视图的切换按钮
            cardView: false,                    //是否显示详细视图
            detailView: false,                   //是否显示父子表
            singleSelect:false,                    //禁止多选
            checkboxHeader:true,                 //列头取消多选
            
            columns: [
            {
            	checkbox:true,
            	align : 'center',
                valign : 'middle',
            },
            {
            	title: '序号',
            	align : 'center',
                valign : 'middle',
                formatter : function (value, row, index){
                	var options = $('#resTable').bootstrapTable('getOptions');  
                    return options.pageSize * (options.pageNumber - 1) + index + 1;  
                }
            },
            {
                field: 'resName',
                title: '资源名称',
                sortable:false,
                align : 'center',
                valign : 'middle',
                
            }, {
                field: 'resCode',
                title: '资源编码',
                sortable:false,
                align : 'center',
                valign : 'middle',
            }, {
                field: 'resType',
                title: '资源类型',
                sortable:false,
                align : 'center',
                valign : 'middle',
                formatter : function (value, row, index){
                	if(value == "0"){
                		return "页面";
                	}else{
                		return "按钮";
                	}
                }
            }, 
            {
                field: 'uri',
                title: '访问地址',
                sortable:false,
                align : 'center',
                valign : 'middle',
            },
            {
                field: 'permission',
                title: '权限字段',
                sortable:false,
                align : 'center',
                valign : 'middle',
            },
            {
                field: 'resOrder',
                title: '排序',
                sortable:false,
                align : 'center',
                valign : 'middle',
            }, {
                field: 'remark',
                title: '备注',
                sortable:false,
                align : 'center',
                valign : 'middle',
            },{
            	field: 'parentId',
                title: '上级节点',
                sortable:false,
                align : 'center',
                valign : 'middle',
                formatter : function (value, row, index){
                	if(value != ""){
                		return "<a href='javascript:;' class='click_btn' data-id='"+value+"'>"+value+"</a>";
                	}else{
                		return "<a href='javascript:;' class='click_btn' data-id='"+value+"'>无父节点</a>";
                	}
                    
                }
            }],

        });
    };	
    //得到查询的参数
    oTableInit.queryParams = function (params) {
        var temp = {   // 这里的键的名字和控制器的变量名必须一直，这边改动，控制器也需要改成一样的
        	size: params.limit,   // 页面大小
            num: (params.offset/params.limit) + 1,  // 页码
        	sort: params.sort,
        	order: params.order,
        	resName : $("#resName").val(),
        	resType : $("#resType").val()
        };
        return temp;
    };
    return oTableInit;       
};


var RoleInit=function(){
	return {
		init : function(){
			RoleInit.query();
			RoleInit.keyQuery();
			RoleInit.clear();
			RoleInit.add();
			RoleInit.update();
			RoleInit.del();
			RoleInit.refresh();
			RoleInit.validatorForm();
			RoleInit.save();
		},
		//查询
		query : function(){
			$("#queryRes").on("click",function(){
				$('#resTable').bootstrapTable('refreshOptions',{
					pageNumber:1,
				});
			});
		},
		//按键查询
		keyQuery : function(){
			$(".queryRes").keypress(function (e) {
	            if (e.which == 13) {
	                $("#queryRes").trigger("click");
	            }
	        });
		},
		clear : function(){
			$(".queryResReset").on("click",function(){
				$('.condition-query input').each(function() {
					if ($(this).val() != "" || $(this).prop('checked') == true) {
						$(this).val("").prop('checked', false);
					}
				});
			});
		},
		
		
		//新增
		add : function(){
			$(".addRes").on("click",function(){
				$('#myModal .title').html("新增");
				$('#myModal').modal();
				$("#myModal .yes").attr("disabled",false);
                //$(".roleForm").data('bootstrapValidator').destroy();
			});
		},
		
		update : function(){
			$(".updateRes").on("click",function(){
				$('#myModal .title').html("修改");
				var ids = $.map($('#resTable').bootstrapTable('getSelections'), function (row) {
			        return row.pkId;
			    });
			    if (ids.length != 1 ) {
			    	DialogUtil.ok("请选择一行修改");
			        return;
			    };
			    
			    $.ajax({
					url: ctx +'/system/resource/getResource/get.mvc',
				    type:"post", 
				    dataType:'json',
				    data : {
			        	id : ids.toString()
			        },
				    success : function(response){
				    	if(!response.result){
				    		DialogUtil.warn(response.message);
					        return;
				    	}
				    	
				    	
				    	$('#myModal .title').html("更新");
						$('#myModal').modal();
						
				    	$("#myModal input[name='resName']").val(response.data.resName);
				    	$("#myModal input[name='resCode']").val(response.data.resCode);
				    	$("#myModal input[name='uri']").val(response.data.uri);
				    	$("#myModal input[name='permission']").val(response.data.permission);
				    	$("#myModal input[name='resOrder']").val(response.data.resOrder);
				    	$("#myModal input[name='remark']").val(response.data.remark);
				    	
				    	//资源类型
				    	 $("#resType").find("option[value='"+response.data.resType+"']").attr("selected",true);
				    	
				    	//默认id
				    	$("#myModal input[name='pkId']").val(ids.toString());
				    	
				    },
				    error: function(XMLHttpRequest, textStatus, errorThrown){
				    	console.log(data);
				    	DialogUtil.warn("系统错误");
				    }
				});
			    $("#myModal .yes").attr("disabled",false);
			});	
		},
		//删除
		del : function(){
			$(".delRes").on("click",function(){
				var ids = $.map($('#resTable').bootstrapTable('getSelections'), function (row) {
			        return row.pkId;
			    });
			    if (ids.length < 1 ) {
			    	DialogUtil.ok("请选择操作对象");
			        return;
			    };
			    DialogUtil.ok_and_cancel("是否删除？",function(){
			    	 $.ajax({
							url: ctx +'/system/role/delSystemRoleById/del.mvc',
						    type:"post", 
						    dataType:'json',
						    data : {
					        	id : ids.toString()
					        },
						    success : function(response){
						    	console.log(response);
						    	if (response.result == true) {
						    		DialogUtil.warning("删除成功");
						    		$('#roleTable').bootstrapTable('refresh');
						    	}else{
						    		DialogUtil.warning(response.message);
						    	}
						    },
						    error: function(XMLHttpRequest, textStatus, errorThrown){
						    	console.log(data);
						    	DialogUtil.warn("系统错误");
						    }
						});
			    },function(){});
			    
			});
		},
		//刷新
		refresh : function(){
			$("#refresh").on("click",function(){
				$('#resTable').bootstrapTable('refresh');
			});
		},
		//校验表单
		validatorForm : function(){
			$(".resForm").bootstrapValidator({
				message: 'This value is not valid',
	            live: 'submitted',
	            fields: {/*验证*/
	            	resName: {/*键名username和input name值对应*/
	                    message: '资源名称无效',
	                    validators: {
	                        notEmpty: {/*非空提示*/
	                            message: '名称不能为空'
	                        },
	                        stringLength: {
	                            max: 20,
	                            message: '角色名称长度不能超过20个字符'
	                        },
	                        regexp: {
	                            regexp: /^(?:(?!(\.|\/|\+|\&|;|%|\'|script|cookie|expression|<|>))[\s\S])*$/,
	                            message: '含有非法字符'
	                        }
	                    }
	                },
	                resCode: {/*键名username和input name值对应*/
	                    message: '资源编码无效',
	                    validators: {
	                        notEmpty: {/*非空提示*/
	                            message: '编码不能为空'
	                        },
	                        stringLength: {
	                            max: 20,
	                            message: '角色名称长度不能超过20个字符'
	                        },
	                        regexp: {
	                            regexp: /^(?:(?!(\.|\/|\+|\&|;|%|\'|script|cookie|expression|<|>))[\s\S])*$/,
	                            message: '含有非法字符'
	                        }
	                    }
	                },
	                /*uri: {键名username和input name值对应
	                    message: '权限字段',
	                    validators: {
	                        notEmpty: {非空提示
	                            message: '权限字段不能为空'
	                        },
	                    }
	                },*/
	                resOrder: {/*键名username和input name值对应*/
	                    message: '排序字段',
	                    validators: {
	                        notEmpty: {/*非空提示*/
	                            message: '排序字段'
	                        },
	                        stringLength: {
	                            max: 20,
	                            message: '角色名称长度不能超过20个字符'
	                        },
	                        regexp: {
	                            regexp: /^(?:(?!(\.|\/|\+|\&|;|%|\'|script|cookie|expression|<|>))[\s\S])*$/,
	                            message: '含有非法字符'
	                        }
	                    }
	                },
	                remark: {/*键名username和input name值对应*/
	                    message: '备注无效',
	                    validators: {
	                        stringLength: {
	                            max: 30,
	                            message: '备注长度不能超过40个字符'
	                        },
	                        regexp: {
	                            regexp: /^(?:(?!(<|>))[\s\S])*$/,
	                            message: '含有非法字符'
	                        }
	                    }
	                
	                }
	                
	            }
			});
			
			//模态框消失清空信息
			$("#myModal").on("hidden.bs.modal",function(e){
                $(".resForm").data('bootstrapValidator').destroy();
                RoleInit.validatorForm();
				$('#myModal input').each(function() {
					if ($(this).val() != "" || $(this).prop('checked') == true) {
						$(this).val("").prop('checked', false);
					}
				});
			});
		
		},
		
		save : function(){
			//保存
			$("#myModal .yes").on("click",function(){

				$(".resForm").data("bootstrapValidator").validate();
				var flag = $(".resForm").data("bootstrapValidator").isValid();
				if(!flag){
					//未通过验证
					return false;
				}
				$("#myModal .yes").attr("disabled",true);
				$.ajax({
					url : ctx + '/system/resource/saveSysResource/save.mvc',
					type : "post",
					dataType : 'json',
					data : $(".resForm").serialize(),
					success : function(response) {
                        //$(".roleForm").data('bootstrapValidator').destroy();
						if (response.result == true) {
							DialogUtil.ok("保存成功");
							//取消
							$('#myModal').modal('hide');
							$('#roleTable').bootstrapTable('refresh');
						}else{
							$("#myModal .yes").attr("disabled",false);
							DialogUtil.warning(response.message);
						}
						console.log(response);
					},
					error : function(XMLHttpRequest, textStatus, errorThrown) {
						console.log(data);
						alert("系统错误");
					}
				});		
				return false;
			});
		}
		
	};
}();

var treeview = function() {
	return {
		init: function() {
			treeview.config();
			treeview.save();

		},
		//配置资源
		config : function(){
			//绑定配置资源
			$(".table-container").on("click",".click_btn",function(){
				//当前行的id
				var childId =$(this).parent().parent().data("uniqueid");
				//当前页面id
				var id=$(this).data("id");
				treeview.initTree(id);
                $('.addResource').modal();
                treeview.setNodeCheckedPartial(id,childId);
			});
		},
		initTree:function(id) {
			$.ajax({
				url: ctx + '/system/resource/listResource/get.mvc',
				type: "post",
				dataType: 'json',
				data: {
					parentId: id
				},
                async:false,
				success: function(response) {
					if (response.result == true) {
						console.log(response.data);
						$('#treeview').treeview({
							data: response.data, // data is not optional
							levels:1,
					        hierarchicalCheck:true,//层级联动选择
					        propagateCheckEvent:true, //层级联动

						});
						//初始化配置的角色
						//默认id
						$(".addResource input[name='pkId']").val(id);
					}
				},
				error: function(XMLHttpRequest, textStatus, errorThrown) {
					alert("系统错误");
				}
			});



		},
        setNodeCheckedPartial:function (id,childId) {
        	$('.addResource').on("shown.bs.modal",function(){
        		 $(".addResource input[name='pkId']").val(childId);
        		if(id !==""){
        			$('#treeview').treeview('expandAll');
                	$("#"+id).trigger('click');
        		}
        		
        	})
        	
        	
        },
        
		//资源配置提交
		save : function(){
			$(".addResource .yes").on("click",function(){
				//更改节点
                var id = $(".addResource input[name='pkId']").val();
                //父节点
                var parentId="";
                if($('#treeview').treeview('getSelected')[0]!=null){
                	parentId=$('#treeview').treeview('getSelected')[0].id;
                }
                
                $.ajax({
                    url: ctx + '/system/resource/udpateResParent/update.mvc',
                    type: "post",
                    dataType: 'json',
                    data: {
                    	childId:id,
                    	parentId:parentId
                    },
                    success: function(response) {
                        if (response.result == true) {
                            DialogUtil.ok("保存成功");
                            $('.addResource').modal('hide');
                        } else {
                            DialogUtil.warning(response.message);
                        }
                    },
                    error: function(XMLHttpRequest, textStatus, errorThrown) {
                        alert("系统错误");
                    }
                });
			});
		}
	};
}();

jQuery(document).ready(function() {
	//1.初始化Table
    var tableInit = new TableInit();
    tableInit.Init();
    //逻辑初始化
    RoleInit.init();
    
    treeview.init();
});

